/**
 * Created by XianTao on 2016/11/11
 * <p/>
 * Copyright (c) 2015-2015
 * Apache License
 * Version 2.0, January 2004
 * http://www.apache.org/licenses/
 */
package org.lego.wechat.base.api;

import org.lego.handle.exception.ExtraInvalidParameterException;
import org.lego.util.ApiResult;
import org.lego.util.HttpUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

/**
 * 自定义菜单
 * 1、自定义菜单最多包括3个一级菜单，每个一级菜单最多包含5个二级菜单。
 * 2、一级菜单最多4个汉字，二级菜单最多7个汉字，多出来的部分将会以“...”代替。
 * 3、创建自定义菜单后，菜单的刷新策略是，在用户进入公众号会话页或公众号profile页时，
 * 如果发现上一次拉取菜单的请求在5分钟以前，就会拉取一下菜单，如果菜单有更新，就会刷新客户端的菜单。
 * 测试时可以尝试取消关注公众账号后再次关注，则可以看到创建后的效果。
 */
@Component
public class MenuApi {
    private final String createUrl = "https://api.weixin.qq.com/cgi-bin/menu/create";
    private final String qyCreateUrl = "";
    @Autowired
    private AccessTokenApi accessTokenApi;

    public boolean createMenu(String corpId, Integer agentId, String corpSecret, String postData) {
        Map<String, String> params = new HashMap<String, String>();
        params.put("access_token", accessTokenApi.getWxAccessToken(corpId, agentId, corpSecret).getAccessToken());
        ApiResult apiResult = ApiResult.create(HttpUtil.post(createUrl, params, postData));
        if (!apiResult.isSucceed()) {
            throw new ExtraInvalidParameterException("WechatSystem.api.errorCode", String.valueOf(apiResult.getErrorCode()));
        }
        return true;
    }
}
